home *** CD-ROM | disk | FTP | other *** search
/ com!online 2005 May / com_0505_1.iso / opensource / top10 / amc_install.exe / {app} / Scripts / Port.hu.ifs < prev    next >
Encoding:
Text File  |  2004-08-25  |  11.8 KB  |  389 lines

  1. // GETINFO SCRIPTING
  2. // Imports hungarian titles and description from port.hu site
  3.  
  4. (***************************************************
  5.  *  Imports hungarian titles and description from: *
  6.  *  www.port.hu                                    *
  7.  *                                                 *
  8.  *  (c) 2004 Peter Varju  varjupe@freemail.hu      *
  9.  *                                                 *
  10.  *  For use with Ant Movie Catalog 3.4.0           *
  11.  *  www.antp.be/software/moviecatalog              *
  12.  *                                                 *
  13.  *  This program is free software; you can         *
  14.  *  redistribute it and/or modify it under the     *
  15.  *  terms of the GNU General Public License as     *
  16.  *  published by the Free Software Foundation;     *
  17.  *  either version 2 of the License, or (at your   *
  18.  *  option) any later version.                     *
  19.  ***************************************************)
  20. program IMDb;
  21.  
  22. var
  23.   MovieName: string;
  24.   BeginPos, EndPos: Integer;
  25.  
  26. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  27. var
  28.   i: Integer;
  29. begin
  30.   result := -1;
  31.   if StartAt < 0 then
  32.     StartAt := 0;
  33.   for i := StartAt to List.Count-1 do
  34.     if Pos(Pattern, List.GetString(i)) <> 0 then
  35.     begin
  36.       result := i;
  37.       Break;
  38.     end;
  39. end;
  40.  
  41. procedure AnalyzePage(Address: string);
  42. var
  43.   Page: TStringList;
  44. begin
  45.   Page := TStringList.Create;
  46.   Page.Text := GetPage(Address);
  47.  
  48.   if pos('Nincs ilyen cφm√ film', Page.Text) <> 0 then
  49.      showmessage('Nincs ilyen cφm√ film a PORT adatbßzisban.')
  50.   else begin
  51.     if pos('<center>', Page.Text) <> 0 then begin
  52.       AnalyzeMoviePage(Page);
  53.     end else begin
  54.       PickTreeClear;
  55.       AddMoviesTitles(Page,'/pls/ci/cinema.index_htm');
  56.       if PickTreeExec(Address) then begin
  57.         AnalyzePage(Address);
  58.         end;
  59.     end;
  60.   end;
  61.   Page.Free;
  62. end;
  63.  
  64. procedure AnalyzeMoviePage(Page: TStringList);
  65. var
  66.   Line, Temp, Value, Value2, FullValue, CommentString: string;
  67.   LineNr: Integer;
  68.   BeginPos, EndPos: Integer;
  69. begin
  70.  
  71.   //hungarian title
  72.   LineNr := FindLine('<center>', Page, 0);
  73.   if LineNr > -1 then
  74.   begin
  75.     Line := Page.GetString(LineNr);
  76.     BeginPos := pos('">', Line)+2;
  77.     EndPos := pos('</font>', Line);
  78.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  79.     SetField(fieldTranslatedTitle, Value);
  80.   end;
  81.  
  82.   //original title
  83.   BeginPos := EndPos+1;
  84.   Delete(Line, 1, BeginPos);
  85.   BeginPos := pos('size="2">(', Line)+10;
  86.   EndPos := pos(')', Line);
  87.   Value := copy(Line, BeginPos, EndPos - BeginPos);
  88.   HTMLRemoveTags(Value);
  89.   SetField(fieldOriginalTitle, Value);
  90.  
  91.   //year
  92.   LineNr := FindLine('</strong>', Page, 0);
  93.   if LineNr > -1 then
  94.   begin
  95.     Line := Page.GetString(LineNr);
  96.     BeginPos := pos('</strong>', Line)-4;
  97.     Value := copy(Line, BeginPos, 4);
  98.     Value2 := Copy(Value, 1, 2);
  99.     if (Value2='19') or (Value2='20') or (Value2='21') then
  100.       SetField(fieldYear, Value);
  101.   end;
  102.  
  103.   //category, country
  104.   LineNr := FindLine('<strong>', Page, 0);
  105.   if LineNr > -1 then
  106.   begin
  107.     Line := Page.GetString(LineNr);
  108.     BeginPos := pos('<strong>', Line)+8;
  109.     EndPos := pos('</strong>', Line);
  110.     Value := copy(Line, BeginPos, EndPos - BeginPos);
  111.     Value := stringReverse(Value);
  112.  
  113.     Value2:=Value;
  114.  
  115.     //cutting year
  116.     EndPos := pos(',', Value);
  117.     Delete(Value, EndPos, Length(Value)-1);
  118.     Value := stringReverse(Value);
  119.     Value := Copy(trim(Value), 0, 2);
  120.     if (Value='19') or (Value='20') or (Value='21') then
  121.       Value2:=Copy(Value2, 7, Length(Value2));
  122.  
  123.     //cutting time
  124.     Value := Value2;
  125.     if Copy(Value,0,5)='crep ' then begin
  126.       EndPos := pos(',', Value);
  127.       Delete(Value, 1, EndPos);
  128.     end;
  129.     Value := stringReverse(Value);
  130.  
  131.     //cutting colors
  132.     if pos('szφnes, fekete-fehΘr ',Value)=1 then begin
  133.       Delete(Value, 1, 21);
  134.     end else
  135.       if (pos('fekete-fehΘr ',Value)=1) or (pos('szφnes ',Value)=1) then begin
  136.         EndPos := pos(' ', Value);
  137.         Delete(Value, 1, EndPos);
  138.       end;
  139.  
  140.     //cutting language type
  141.     if (pos('magyarul beszΘl⌡ ',Value)=1) then begin
  142.       Delete(Value, 1, 17);
  143.     end;
  144.     if (pos('hangalßmondßsos ',Value)=1) then begin
  145.       Delete(Value, 1, 16);
  146.     end;
  147.     if (pos('feliratos ',Value)=1) then begin
  148.       Delete(Value, 1, 10);
  149.     end;
  150.     if (pos('nΘmafilm ',Value)=1) then begin
  151.       Delete(Value, 1, 9);
  152.     end;
  153.  
  154.     Value2:=Copy(Value,0,pos(' ',Value)-1);
  155.     Value:=Copy(Value,pos(' ',Value)+1,Length(Value));
  156.  
  157.     SetField(fieldCategory, AnsiUpFirstLetter(Value));
  158.     SetField(fieldCountry, AnsiUpFirstLetter(Value2));
  159.   end;
  160.  
  161.   //actors
  162.   LineNr := FindLine('<b>szerepl⌡(k):', Page, 0);
  163.   if LineNr > -1 then
  164.   begin
  165.     Line := Page.GetString(LineNr);
  166.     BeginPos := pos('<b>szerepl⌡(k): </b><br>', Line)+24;
  167.     Delete(Line, 1, BeginPos-1);
  168.     EndPos := pos('<hr>', Line)-1;
  169.     Value := copy(Line, 0, EndPos);
  170.     Value := StringReplace(Value, '<br>', #13#10);
  171.     HTMLRemoveTags(Value);
  172.     SetField(fieldActors, Value);
  173.   end;
  174.  
  175.   //director
  176.   LineNr := FindLine('<strong>rendez⌡: </strong>', Page, 0);
  177.   if LineNr > -1 then
  178.   begin
  179.     Line := Page.GetString(LineNr);
  180.     BeginPos := pos('<strong>rendez⌡: </strong>', Line)+31;
  181.     Delete(Line, 1, BeginPos-1);
  182.     EndPos := pos('<br>', Line)-1;
  183.     Value := copy(Line, 0, EndPos);
  184.     HTMLRemoveTags(Value);
  185.     SetField(fieldDirector, Value);
  186.   end;
  187.  
  188.   //description
  189.   LineNr := FindLine('<b>szavazok</b></a> rß!', Page, 0);
  190.   if LineNr > -1 then
  191.   begin
  192.     Line := Page.GetString(LineNr);
  193.     BeginPos := pos('<b>szavazok</b></a> rß!', Line)+23;
  194.     Delete(Line, 1, BeginPos-1);
  195.     BeginPos := pos('size="2">', Line)+9;
  196.     Delete(Line, 1, BeginPos-1);
  197.     EndPos := pos('</font>', Line)-1;
  198.     Value := copy(Line, 0, EndPos);
  199.     Value := StringReplace(Value, '<BR>', #13#10);
  200.     HTMLRemoveTags(Value);
  201.     SetField(fieldDescription, Value);
  202.   end;
  203.  
  204.   //producer
  205.   LineNr := FindLine('<strong>producer: </strong>', Page, 0);
  206.   if LineNr > -1 then
  207.   begin
  208.     Line := Page.GetString(LineNr);
  209.     BeginPos := pos('<strong>producer: </strong>', Line)+32;
  210.     Delete(Line, 1, BeginPos-1);
  211.     EndPos := pos('<br>', Line)-1;
  212.     Value := copy(Line, 0, EndPos);
  213.     HTMLRemoveTags(Value);
  214.     SetField(fieldProducer, Value);
  215.   end;
  216.  
  217.   //comments
  218.   CommentString := '';
  219.   //comments - screenwriter
  220.   LineNr := FindLine('<strong>forgat≤k÷nyvφr≤: </strong>', Page, 0);
  221.   if LineNr > -1 then
  222.   begin
  223.     Line := Page.GetString(LineNr);
  224.     BeginPos := pos('<strong>forgat≤k÷nyvφr≤: </strong>', Line)+39;
  225.     Delete(Line, 1, BeginPos-1);
  226.     EndPos := pos('<br>', Line)-1;
  227.     Value := copy(Line, 0, EndPos);
  228.     HTMLRemoveTags(Value);
  229.     if Value<>'' then
  230.       CommentString := CommentString+'Forgat≤k÷nyvφr≤: '+Value+#13#10;
  231.   end;
  232.  
  233.   //comments - writer
  234.   LineNr := FindLine('<strong>φr≤: </strong>', Page, 0);
  235.   if LineNr > -1 then
  236.   begin
  237.     Line := Page.GetString(LineNr);
  238.     BeginPos := pos('<strong>φr≤: </strong>', Line)+27;
  239.     Delete(Line, 1, BeginPos-1);
  240.     EndPos := pos('<br>', Line)-1;
  241.     Value := copy(Line, 0, EndPos);
  242.     HTMLRemoveTags(Value);
  243.     if Value<>'' then
  244.       CommentString := CommentString+'═r≤: '+Value+#13#10;
  245.   end;
  246.  
  247.   //comments - music
  248.   LineNr := FindLine('<strong>zene: </strong>', Page, 0);
  249.   if LineNr > -1 then
  250.   begin
  251.     Line := Page.GetString(LineNr);
  252.     BeginPos := pos('<strong>zene: </strong>', Line)+28;
  253.     Delete(Line, 1, BeginPos-1);
  254.     EndPos := pos('<br>', Line)-1;
  255.     Value := copy(Line, 0, EndPos);
  256.     HTMLRemoveTags(Value);
  257.     if Value<>'' then
  258.       CommentString := CommentString+'Zene: '+Value+#13#10;
  259.   end;
  260.  
  261.   //comments - cameraman
  262.   LineNr := FindLine('<strong>operat⌡r: </strong>', Page, 0);
  263.   if LineNr > -1 then
  264.   begin
  265.     Line := Page.GetString(LineNr);
  266.     BeginPos := pos('<strong>operat⌡r: </strong>', Line)+32;
  267.     Delete(Line, 1, BeginPos-1);
  268.     EndPos := pos('<br>', Line)-1;
  269.     Value := copy(Line, 0, EndPos);
  270.     HTMLRemoveTags(Value);
  271.     if Value<>'' then
  272.       CommentString := CommentString+'Operat⌡r: '+Value+#13#10;
  273.   end;
  274.  
  275.   //comments - costum designer
  276.   LineNr := FindLine('<strong>jelmeztervez⌡: </strong>', Page, 0);
  277.   if LineNr > -1 then
  278.   begin
  279.     Line := Page.GetString(LineNr);
  280.     BeginPos := pos('<strong>jelmeztervez⌡: </strong>', Line)+37;
  281.     Delete(Line, 1, BeginPos-1);
  282.     EndPos := pos('<br>', Line)-1;
  283.     Value := copy(Line, 0, EndPos);
  284.     HTMLRemoveTags(Value);
  285.     if Value<>'' then
  286.       CommentString := CommentString+'Jelmeztervez⌡: '+Value+#13#10;
  287.   end;
  288.  
  289.   //comments - cutter
  290.   LineNr := FindLine('<strong>vßg≤: </strong>', Page, 0);
  291.   if LineNr > -1 then
  292.   begin
  293.     Line := Page.GetString(LineNr);
  294.     BeginPos := pos('<strong>vßg≤: </strong>', Line)+28;
  295.     Delete(Line, 1, BeginPos-1);
  296.     EndPos := pos('<br>', Line)-1;
  297.     Value := copy(Line, 0, EndPos);
  298.     HTMLRemoveTags(Value);
  299.     if Value<>'' then
  300.       CommentString := CommentString+'Vßg≤: '+Value+#13#10;
  301.   end;
  302.  
  303.   SetField(fieldComments, CommentString);
  304.  
  305.   //picture
  306.   LineNr := FindLine('<img src="/mozi/kep_film', Page, 0);
  307.   if LineNr > -1 then
  308.   begin
  309.     Line := Page.GetString(LineNr);
  310.     BeginPos := pos('<img src="', Line) + 10;
  311.     Delete(Line, 1, BeginPos-1);
  312.     EndPos := pos('"', Line);
  313.     Value := copy(Line, 1, EndPos - 1);
  314.     GetPicture(Value, True); // False = do not store picture externally ; store it in the catalog file
  315.   end;
  316.  
  317.   DisplayResults;
  318. end;
  319.  
  320. Function stringReverse(S : String): String;
  321. Var
  322.    i : Integer;
  323. Begin
  324.    Result := '';
  325.    For i := Length(S) DownTo 1 Do
  326.    Begin
  327.      Result := Result + Copy(S,i,1) ;
  328.    End;
  329. End;
  330.  
  331. procedure AddMoviesTitles(Page: TStringList; Tag: string);
  332. var
  333.   Line: string;
  334.   LineNr: Integer;
  335.   MovieTitle, OriTitle, MovieAddress, Year: string;
  336.   StartPos, EndPos: Integer;
  337. begin
  338.   LineNr := FindLine(tag, Page, 0);
  339.   if LineNr > -1 then
  340.   begin
  341.     PickTreeAdd('Talßlatok:', '');
  342.     Line := Page.GetString(LineNr);
  343.     repeat
  344.       StartPos := pos('href="', Line) + 5;
  345.       Delete(Line, 1, StartPos);
  346.       MovieAddress := Copy(Line, 1, pos('" target="', Line) - 1);
  347.       StartPos := pos('i_body=', MovieAddress) + 7;
  348.       EndPos := pos('&i_title=', MovieAddress);
  349.       MovieAddress:=Copy(Line, StartPos, EndPos-StartPos);
  350.       MovieAddress:=StringReplace(MovieAddress, '@@@', '&');
  351.       MovieAddress:=StringReplace(MovieAddress, '@@', '?');
  352.  
  353.       StartPos := Pos('<strong>', Line) + 8;
  354.       MovieTitle := Copy(Line, StartPos, Pos('</strong>', Line) - StartPos);
  355.       StartPos := Pos('</a>', Line) + 6;
  356.       OriTitle := Copy(Line, StartPos, Pos(')</font>', Line) - StartPos);
  357.       StartPos := Pos(') </font>', Line) - 4;
  358.       Year := Copy(Line, StartPos, 4);
  359.       if (Copy(Year,0,2)='19') or (Copy(Year,0,2)='20') or (Copy(Year,0,2)='21') then
  360.         Year := Copy(Line, StartPos, 4)
  361.       else
  362.         Year := '';
  363.     MovieTitle:=MovieTitle+' ('+OriTitle+'), '+Year;
  364.       HTMLDecode(Movietitle);
  365.       PickTreeAdd(MovieTitle, 'http://www.port.hu' + MovieAddress);
  366.         LineNr := FindLine(tag, Page, LineNr+1);
  367.         if LineNr > -1 then
  368.         Line := Page.GetString(LineNr)
  369.         else
  370.         Line := '';
  371.     until Line = '';
  372.   end;
  373. end;
  374.  
  375. begin
  376.   if CheckVersion(3,4,0) then
  377.   begin
  378.     MovieName := GetField(fieldOriginalTitle);
  379.     if MovieName = '' then
  380.       MovieName := GetField(fieldTranslatedTitle);
  381.     if Input('Port.hu import', 'A keresend⌡ film cφme:', MovieName) then
  382.     begin
  383.       AnalyzePage('http://www.port.hu/pls/ci/cinema.film_list?i_film_title='+UrlEncode(MovieName));
  384.     end;
  385.   end else
  386.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
  387. end.
  388.  
  389.